/*
 * @Author: your name
 * @Date: 2022-03-02 14:27:19
 * @LastEditTime: 2022-03-02 14:45:45
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \JS\day04\5-检测属性.js
 */
//
//  in  检测某属性是否是某对象的自有属性或者是继承属性
//自有属性：声明对象的时候写在对象里面的属性
//继承属性：继承来的属性
var obj={
    name:'tom',
    age:12
};
console.log( 'name' in obj,'自有属性');  //true 
console.log( 'age' in obj,'自有属性');
console.log( 'gender' in obj,'非自有属性');//false
console.log( 'toString' in obj,'继承属性');//true

//.hasOwnProperty
//检测给定的属性是否是对象的自有属性，对于继承属性将返回false
console.log('------------------------------------');
var obj1={
    name:'张三',
    age:18,
    school:'太原理工大学'
}
console.log(obj1.hasOwnProperty('name'),'自有属性');      //true
console.log(obj1.hasOwnProperty('toString'),'继承属性');//false
console.log(obj1.hasOwnProperty('gender'),'非自有属性');//fales

// propertyIsEnumerable()是hasOwnProperty()的增强版，除了是自身属性外，
//还要求是可枚举属性(自己写的属性)，即我们创建的属性。
var obj2={
    name :'lerry',
    age:28
};
console.log(obj2.propertyIsEnumerable('name'),'可枚举属性'); //true
console.log(obj2.propertyIsEnumerable('toString'),'不可枚举属性');//false
console.log(obj2.propertyIsEnumerable('gender'),'不可枚举属性'); //false